6.2.15 删除镜像

当读者不再需要某个镜像的时候,可以通过 docker image rm 命令从Docker主机删除该镜像。其中, rm 是remove的缩写。

删除操作会在当前主机上删除该镜像以及相关的镜像层。这意味着无法通过 docker image ls 命令看到删除后的镜像,并且对应的包含镜像层数据的目录会被删除。但是,如果某个镜像层被多个镜像共享,那只有当全部依赖该镜像层的镜像都被删除后,该镜像层才会被删除。

下面的示例中通过镜像ID来删除镜像,可能跟读者机器上镜像ID有所不同。

$ docker image rm 02674b9cb179
Untagged: alpine@sha256:c0537ff6a5218...c0a7726c88e2bb7584dc96
Deleted: sha256:02674b9cb179d57...31ba0abff0c2bf5ceca5bad72cd9
Deleted: sha256:e154057080f4063...2a0d13823bab1be5b86926c6f860

如果被删除的镜像上存在运行状态的容器,那么删除操作不会被允许。再次执行删除镜像命令之前,需要停止并删除该镜像相关的全部容器。

一种删除某Docker主机上全部镜像的快捷方式是在 docker image rm 命令中传入当前系统的全部镜像ID,可以通过 docker image ls 获取全部镜像ID(使用 -q 参数)。该操作在下面会进行演示。

如果是在Windows环境中,那么只有在PowerShell终端中执行才会生效。在CMD中执行并不会生效。

$ docker image rm $(docker image ls -q) -f

为了理解具体工作原理,首先下载一组镜像,然后通过运行 docker image ls -q

$ docker image pull alpine
Using default tag: latest
latest: Pulling from library/alpine
e110a4a17941: Pull complete
Digest: sha256:3dcdb92d7432d5...3626d99b889d0626de158f73a
Status: Downloaded newer image for alpine:latest
$ docker image pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
952132ac251a: Pull complete
82659f8f1b76:  Pull complete
c19118ca682d:  Pull complete
8296858250fe:  Pull complete
24e0251a0e2c:  Pull complete
Digest: sha256:f4691c96e6bba...128ae95a60369c506dd6e6f6ab
Status: Downloaded newer image for ubuntu:latest
$ docker image ls -q
bd3d4369aebc
4e38e38c8ce0

可以看到 docker image ls -q 命令只返回了系统中本地拉取的全部镜像的ID列表。将这个列表作为参数传给 docker image rm 会删除本地系统中的全部镜像。

$ docker image rm $(docker image ls -q) -f
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:f4691c9...2128ae95a60369c506dd6e6f6ab
Deleted: sha256:bd3d4369aebc494...fa2645f5699037d7d8c6b415a10
Deleted: sha256:cd10a3b73e247dd...c3a71fcf5b6c2bb28d4f2e5360b
Deleted: sha256:4d4de39110cd250...28bfe816393d0f2e0dae82c363a
Deleted: sha256:6a89826eba8d895...cb0d7dba1ef62409f037c6e608b
Deleted: sha256:33efada9158c32d...195aa12859239d35e7fe9566056
Deleted: sha256:c8a75145fcc4e1a...4129005e461a43875a094b93412
Untagged: alpine:latest
Untagged: alpine@sha256:3dcdb92...313626d99b889d0626de158f73a
Deleted: sha256:4e38e38c8ce0b8d...6225e13b0bfe8cfa2321aec4bba
Deleted: sha256:4fe15f8d0ae69e1...eeeeebb265cd2e328e15c6a869f
$ docker image ls
REPOSITORY     TAG    IMAGE ID    CREATED    SIZE

请读者跟本书一起,回顾一下刚才操作Docker镜像用到的命令。

results matching ""

    No results matching ""